package com.linkhub.oms.data.sync.api.wms.domain.dto;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author Jaycle
 * @version 1.0.0
 * @description 出库单创建
 * @date 2024/06/14日 12:45
 */
@Data
public class WmsCreateDeliveryListDTO implements Serializable {
    /**
     * 发货人信息
     */
    private SenderInfo senderInfo;

    /**
     * 收货人信息
     */
    private ReceiverInfo receiverInfo;

    /**
     * 货主代码
     */
    private String ownerCode;
    /**
     * 仓库代码
     */
    private String warehouseCode;

    /**
     * 订单是否需要二次包装，只有一个产品且ready2ship为是则为真，否则为假
     */
    private Boolean userDefined2;

    /**
     * 面单JS
     */
    private String customJson;

    /**
     * 装箱单
     */
    private String packingList;

    /**
     * 商家用户ID
     */
    private String merchantUserId;

    /**
     * 出库产品信息
     */
    private List<ProductParam> productInfo;

    @Data
    public static class SenderInfo {
        /**
         * 对应用户发货信息的姓名
         */
        private String name;

        /**
         * 对应用户发货信息的手机号
         */
        private String mobile;

        /**
         * 对应用户发货信息的国家，需转换成国家简码
         */
        private String countryCode;

        /**
         * 对应用户发货信息的城市
         */
        private String city;

        /**
         * 对应用户发货信息的详细地址
         */
        private String detailAddress;

        /**
         * 对应用户发货信息的邮编
         */
        private String zipCode;
    }

    @Data
    public static class ReceiverInfo {
        /**
         * 对应买家信息的姓名
         */
        private String name;

        /**
         * 对应买家信息的手机号
         */
        private String mobile;

        /**
         * 对应买家信息的国家，需转换成国家简码
         */
        private String countryCode;

        /**
         * 对应买家信息的省份
         */
        private String province;

        /**
         * 对应买家信息的城市
         */
        private String city;

        /**
         * 对应买家信息的详细地址1
         */
        private String detailAddress;

        /**
         * 对应买家信息的邮编
         */
        private String zipCode;
    }

    @Data
    public static class ProductParam {
        /**
         * OMS产品ID
         */
        private String itemCode;

        /**
         * WMS产品ID
         */
        private String itemId;

        /**
         * 产品数量
         */
        private String planQty;
    }
}
